26. 删除有序数组中的重复项
26. 删除有序数组中的重复项
Similar Question
leading to the advanced question
Solution Tips
快慢指针去重, 处理特征相同的数组?
快指针跳过相同的元素, 慢指针永远指向可替换的位置
方案一: 快慢指针
/**
* @param {number[]} nums
* @return {number}
*/
var removeDuplicates = function(nums) {
// 原数组有序, 原地删除
// 因为元素相对顺序不变, 所以不可以使用 27 题中的头尾指针的思路了
// 但是因为现在数组是有序的, 所以使用快慢指针可以不用像 27 题那种挪动后续所有元素?
// 总之使用快慢指针, 快指针一直挪动, 到下一个不相等的元素
// 慢指针只有再更新了元素之后才会挪动位置
let fast = 0;
let slow = 0;
while (fast < nums.length && slow < nums.length) {
if (nums[fast] !== nums[fast - 1]) {
nums[slow] = nums[fast]
slow++
}
fast++
}
return slow;
};